<?php

class Tests_model extends CI_Model
{

	//vrati pole vsetkych testov
	function GetTests()
	{
		$q = $this->db->get('tests');
		return $q->result();
	}
	
	//vrati pole testov daneho zadania
	function GetAssignmentTests($id)
	{
		$q = $this->db->get_where('tests', array('assignment_id' => $id));
		return $q->num_rows() == 0 ? null : $q->first_row();
	}
	
	//prida novy test
	//vstup: asociativne pole, kde klucom je meno stlpca v databaze
	//vrati uspesnost operacie ako boolean hodnotu
	function InsertTest($test)
	{
		return $this->db->insert('tests', $test);
	}
	
	//aktualizuje test s danym id-ckom
	//dostane ako vstup id testu a nove udaje ako asociativne pole pri inserte
	//vrati uspesnost operacie
	function UpdateTest($id, $test)
	{
		$this->db->where('id', $id);
		return $this->db->update('tests', $test);
	}
	
	//odstrani test s id-cok $id
	function RemoveTest($id)
	{
		$this->db->delete('tests', array('id' => $id));
	}
	
	//vrati, ci pouzivatel vyriesil dany test
	//dostane id pouzivatela a id testu
	//vrati boolean
	function IsTestPassed($idTest, $idUser)
	{
		$this->db->where('user_id', $idUser)
				 ->where('tests_id', $idTest)
				 ->get('passed_tests');
		return $q->num_rows() != 0;;
	}
	
	//prida uspesne prejdeny test
	//vstup: asociativne pole, kde klucom je meno stlpca v databaze
	//vrati uspesnost operacie ako boolean hodnotu
	function InsertPassedTest($test)
	{
		if ($this->IsTestPassed($test['tests_id'], $test['users_id'])) 
		{
			return true;
		}
		return $this->db->insert('passed_tests', $test);
	}
	
	//odstrani prejdeny test podla id pouzivatela a testu
	function DeletePassedTest($idTest, $idUser)
	{
		if (!$this->IsTestPassed($idTest, $idUser)) return;
		$this->db->where('tests_id', $idTest)
				 ->where('users_id', $idUser)
				 ->delete('passed_tests');
	}

}